Fundamentos do Aprendizado Estatístico
Considere uma amostra observada
\[ \mathcal D_n=\{(X_1,Y_1),\ldots,(X_n,Y_n)\} \]
A pergunta central é:
Como construir, a partir dos dados observados, uma função capaz de prever \(Y\) para uma nova observação \(X\)?
\[ \boxed{\text{Dados}}\longrightarrow \boxed{\text{Algoritmo}}\longrightarrow \boxed{\hat g(x)}\longrightarrow \boxed{\text{Predição}} \]
\[ \text{Entrada}+\text{Regras}\longrightarrow\text{Saída} \]
As regras são especificadas pelo programador.
\[ \text{Entrada}+\text{Saída}\longrightarrow\text{Algoritmo}\longrightarrow\text{Modelo} \]
Parte das regras é aprendida a partir dos dados.
Segundo a formulação clássica de Mitchell, um sistema aprende a partir de uma experiência \(E\), para uma tarefa \(T\), segundo uma medida de desempenho \(P\), quando seu desempenho melhora com a experiência.
Prever o preço de um imóvel.
Histórico de imóveis observados.
RMSE em novas observações.
| Tipo | Informação disponível | Exemplos |
|---|---|---|
| Supervisionado | \((X,Y)\) | regressão, classificação |
| Não supervisionado | \(X\) | clustering, PCA |
| Por reforço | estado, ação e recompensa | decisões sequenciais |
Nesta Parte I, estudaremos aprendizado supervisionado, tratando regressão e classificação em paralelo.
Dispomos de observações
\[ \mathcal D_n = \{(\mathbf X_1,Y_1),\ldots,(\mathbf X_n,Y_n)\} \]
em que
\[ \mathbf X_i\in\mathcal X \qquad\text{e}\qquad Y_i\in\mathcal Y \]
Queremos aprender uma função de decisão ou predição
\[ \boxed{ g:\mathcal X\rightarrow\mathcal A } \]
A forma de \(\mathcal Y\), a ação \(\mathcal A\) e a função de perda determinam o problema de aprendizado
\[ Y\in\mathbb R \] Resposta quantitativa
\[ Y\in\{1,\ldots,K\} \] Resposta categórica
De modo geral, este problema pode ser dividido em dois objetivos principais.
@breiman2001twocultures descreve duas tradições complementares:
Machine Learning e Estatística não são opostos: são complementares.
Historicamente, as duas áreas enfatizaram objetivos diferentes:
Hoje muitos métodos modernos procuram combinar as duas culturas, buscando:
Exemplos:
Em modelagem estatística e aprendizado de máquina, frequentemente existe um trade-off entre interpretabilidade e flexibilidade.
\[ \text{Maior interpretabilidade} \quad\longleftrightarrow\quad \text{Maior flexibilidade} \]
Buscamos aproximar a função de predição, que descreve a relação entre uma variável resposta \(Y \in \mathbb{R}\) e um vetor de covariáveis \(x\).
\[ \boxed{\hat g(x)\approx r(x)=\mathbb E[Y\mid X=x]} \]
Agora surge a pergunta:
Como definir matematicamente o que significa uma boa previsão?
Suponha que o valor observado seja
\[ Y=80 \]
Dois modelos produzem
\[ \hat Y_A=79, \qquad \hat Y_B=65 \]
Precisamos de uma regra que atribua um custo ao erro de predição.
Uma função de perda é denotada por
\[ L(Y,g(X)) \]
Ela mede o custo associado à previsão \(g(X)\) quando o valor observado é \(Y\).
Uma escolha comum em problemas de regressão é a perda quadrática
\[ \boxed{L(Y,g(X))=(Y-g(X))^2} \]
Características:
Além da perda quadrática, outras funções de perda podem ser utilizadas.
\[ \boxed{L(Y,g(X))=|Y-g(X)|} \]
| Perda | Preditor ótimo |
|---|---|
| quadrática | média condicional |
| absoluta | mediana condicional |
A escolha da função de perda ajuda a determinar o que o algoritmo aprende.
A perda avalia uma previsão. O risco avalia o desempenho médio do modelo em novas observações:
\[ \boxed{R(g)=\mathbb E[L(Y,g(X))]} \]
Ou seja, o risco corresponde ao valor esperado da função de perda.
\[ L(y,a)=(y-a)^2 \]
\[ \boxed{L(y,a)=I\{y\neq a\}} \] Em ambos os casos \[ \boxed{R(g)=E[L(Y,g(X))]} \]
O objetivo é encontrar uma função \(g\) que minimize o risco
\[ g^* = \arg\min_g \mathbb{E}[L(Y,g(\mathbf{x}))] \]
Em outras palavras, queremos um modelo que produza erros pequenos em média para novas observações.
Para regressão com perda quadrática,
\[ R(g) = E[(Y-g(X))^2] \]
o minimizador populacional é
\[ \boxed{ r(x)=E(Y\mid X=x) } \]
Esse resultado explica por que a média condicional é o alvo natural da regressão
Uma forma comum de representar o problema é
\[ Y=r(X)+\varepsilon, \qquad E(\varepsilon\mid X)=0 \]
Podemos então medir o erro do modelo em relação à função verdadeira:
\[ \boxed{ R_{pred}(g) = E[(Y-\widehat g(X))^2] = E[(r(X)-\widehat g(X))^2] + E(\varepsilon^2) } \]
O primeiro termo depende do estimador
O segundo é o erro irredutível
Mesmo que
\[ g^*(x)=r(x), \]
ainda teremos
\[
R(g^*)= E(\varepsilon^2)
\]
Nem todo erro de predição é consequência de um modelo ruim.
Suponha que o preço de um imóvel seja determinado por
\[ Y = r(X) + \varepsilon \]
onde:
Para um imóvel de 100 m², suponha que
\[ r(100) = 500 \]
ou seja, o preço médio esperado é de R$ 500 mil.
Nosso modelo, porém, estima:
\[ \hat g(100) = 470 \]
Logo, o erro devido ao modelo é
\[ r(100)-\hat g(100)=500-470=30 \]
Agora suponha que esse imóvel tenha sido vendido por R$ 520 mil:
\[ Y = 520 \]
Então,
\[ \varepsilon = Y-r(100)=520-500=20 \]
Assim, o erro total de predição é
\[ Y-\hat g(100) = \underbrace{r(100)-\hat g(100)}_{\text{erro do modelo}} + \underbrace{\varepsilon}_{\text{erro irredutível}} \]
\[ 520-470 = 30+20 = 50 \]
Ideia principal
Mesmo que tivéssemos um modelo perfeito,
\[ \hat g(100)=r(100)=500, \]
ainda haveria erro:
\[ Y-\hat g(100)=520-500=20 \]
Esse componente corresponde ao erro irredutível.
Um algoritmo de aprendizagem pode ser representado por
\[ \mathcal D_n \overset{\mathcal A}{\longrightarrow} \hat g_{\mathcal D_n} \]
onde \(\mathcal{D}_n\) representa a amostra de treinamento (já observada).
Nesse caso, tratamos \(\hat{g}\) como fixa e avaliamos seu risco em uma nova observação \((X,Y)\):
\[ R(g) = E\left[(Y-\hat{g}(X))^2\right] \]
Esse risco é chamado de risco condicional.
Se mudarmos a amostra, podemos obter outro modelo:
\[ \mathcal D_1\to\hat g_1, \qquad \mathcal D_2\to\hat g_2, \qquad \mathcal D_3\to\hat g_3 \] Como \(\hat{g}\) depende da amostra, ele é uma função aleatória dos dados.
Nesse caso, podemos considerar a esperança também em relação à amostra de treinamento.
Assim, o risco esperado é a média do risco condicional sobre todas as possíveis amostras:
\[ E_{\mathcal{D}_n}\left[R\big(\hat{g}_{\mathcal{D}_n}\big)\right] \]
Assim,
\[ \text{Risco esperado} = E[\text{risco condicional}] \]
Ou seja:
Essa ideia será fundamental para compreender variância do estimador.
\[ \boxed{\text{Dados}} \rightarrow \boxed{\hat g} \rightarrow \boxed{L} \rightarrow \boxed{R(g)} \]
Mas há um problema:
\[ \boxed{R(g)\text{ é desconhecido}} \]
Como estimar o erro que o modelo terá em dados ainda não observados?
Considere
Queremos estimar
\[ r(x)= E[Y\mid X=x] \]
Qual é a expectativa de vida média esperada para um país com PIB per capita igual a \(x\)?
A função de predição considerada é
\[ g(x) = \beta_0 + \sum_{i=1}^{p} \beta_i x^i \]
Pergunta:
O modelo é flexível o suficiente para representar a relação entre \(X\) e \(Y\)?
Considere modelos polinomiais com
\[ p=1, \qquad p=4, \qquad p=50 \]
Um modelo muito simples pode apresentar
\[ \text{alto viés} \quad\Rightarrow\quad \text{estrutura relevante não capturada} \]
Exemplo: polinômio de grau \(1\) quando a relação é fortemente não linear.
Um modelo excessivamente flexível pode ajustar características específicas da amostra:
\[ \text{erro de treino muito baixo} \quad\not\Rightarrow\quad \text{boa generalização} \]
Em geral, quando aumentamos a complexidade,
\[ \text{complexidade}\uparrow \quad\Rightarrow\quad \widehat R_{\text{treino}}\downarrow \]
Então por que não escolher sempre o modelo mais complexo?
\[ \boxed{ \text{Bom ajuste aos dados observados} \neq \text{Boa predição em novos dados} } \]
Precisamos estimar o desempenho fora da amostra usada no ajuste.
Para isso, utilizamos um critério que permita avaliar a qualidade preditiva da função.
Neste contexto, usamos o risco quadrático para medir a qualidade do modelo \(R(g).\)
Queremos então escolher uma função \(g\) dentro de uma classe de candidatos \(\mathcal{G}\) que apresente baixo risco quadrático.
Ao selecionar um modelo, queremos evitar:
Ou seja, buscamos um modelo com bom poder preditivo para novas observações.
Na prática, o valor de \(R(g)\) é desconhecido.
Por isso, precisamos estimar o risco para avaliar e comparar as funções \(g \in \mathcal{G}.\)
A questão central passa a ser:
Como estimar o risco de predição de um modelo?
Na próxima etapa, estudamos métodos para estimar esse risco e, assim, escolher o modelo mais adequado.
Uma forma natural de avaliar um modelo é medir seu erro nos dados de treinamento.
Esse erro é chamado de risco observado ou erro quadrático médio (EQM) no conjunto de treinamento:
\[ EQM(g) = \frac{1}{n}\sum_{i=1}^{n} (Y_i - \hat g(X_i))^2 \]
O risco observado é um estimador muito otimista do verdadeiro risco de predição.
Uma forma simples de estimar o risco de predição é dividir o conjunto de dados em duas partes:
\[ \boxed{\text{Treino}} \qquad \boxed{\text{Validação}} \]
Para um conjunto de validação \(V\),
\[ \widehat R_{\text{val}}(g) = \frac{1}{|V|} \sum_{i\in V} (Y_i- \hat g(X_i))^2 \]
Como os dados de validação não foram usados para treinar o modelo, essa estimativa é mais próxima do verdadeiro erro de predição.
Com o aumento da complexidade:
Ideia central: selecionar a complexidade pelo desempenho fora da amostra.
Se avaliarmos muitos modelos diferentes, podemos acabar escolhendo um modelo que se ajusta bem ao conjunto de validação por acaso.
Isso gera super-ajuste ao conjunto de validação.
Consequência:
Uma prática comum é dividir os dados em três partes:
O conjunto de teste fornece uma estimativa do risco
\[ R(g) = E[(Y - \hat g(X))^2] \]
para novas observações. Assim podemos avaliar se o modelo escolhido realmente generaliza bem.
O conjunto de teste não deve participar das decisões de modelagem.
Uma única divisão treino/validação:
Uma alternativa é a validação cruzada.
Dividimos os dados em \(k\) subconjuntos aproximadamente do mesmo tamanho:
\[ D=F_1\cup\cdots\cup F_k \]
Cada fold funciona uma vez como validação; os demais são usados para treinamento.
O estimador do risco via \(k\)-fold cross-validation é
\[ \widehat R_{CV} = \frac{1}{n} \sum_{j=1}^{k} \sum_{i\in F_j} \left(Y_i-\hat g_{-j}(X_i)\right)^2 \]
Aqui, \(\hat g_{-j}\) é ajustado sem usar as observações do fold \(F_j\).
Quando \(k = n\) cada fold contém apenas uma observação.
Nesse caso, temos o método Leave-One-Out Cross Validation (LOOCV)
\[ \text{Pré-processar todos os dados} \longrightarrow \text{CV} \]
\[ \text{Em cada fold:} \quad \text{estimar pré-processamento no treino} \longrightarrow \text{aplicar na validação} \]
Informação do conjunto de validação não deve influenciar o treinamento.
Depois de escolher o modelo usando treinamento e validação, utilizamos o conjunto de teste para estimar o risco verdadeiro do modelo.
O conjunto de teste não foi usado para ajustar o modelo.
Denote por \((\tilde{X}_1,\tilde Y_1),\ldots,(\tilde{X}_m,\tilde Y_m)\) as observações do conjunto de teste.
Um estimador do risco é
\[ \hat R(g) = \frac{1}{m} \sum_{k=1}^{m} (\tilde Y_k - g(\tilde{X}_k))^2 \]
Definimos
\[ W_k = (\tilde Y_k - g(\tilde{X}_k))^2, \qquad k = 1 \cdots m \]
Assim,
\[ \hat R(g) = \frac{1}{m}\sum_{k=1}^{m} W_k \]
Se as observações do conjunto de teste são i.i.d., então \(W_1,\ldots,W_m\) são variáveis aleatórias independentes e identicamente distribuídas.
Logo, \(\hat R(g)\) é simplesmente a média dessas variáveis.
Pelo Teorema Central do Limite,
\[ \hat R(g) \approx \mathcal{N} \left( R(g), \frac{1}{m}\,\mathrm{Var}(W) \right) \]
quando \(m\) é grande.
Na prática, estimamos \(\mathrm{Var}(W)\) pela variância amostral:
\[ \hat\sigma^2 = \frac{1}{m-1} \sum_{k=1}^{m} (W_k - \bar W)^2 \]
onde
\[ \bar W = \hat R(g) \]
Um intervalo de confiança aproximado de 95% é
\[ \hat R(g) \pm 1.96 \frac{\hat\sigma}{\sqrt{m}} \]
O intervalo de confiança fornece uma medida de incerteza da estimativa do risco. Isso permite avaliar:
\[ \boxed{ \text{Treinar} \neq \text{Selecionar} \neq \text{Avaliar} } \]
Como a complexidade do modelo afeta seu erro de generalização?
Imagine várias amostras independentes provenientes da mesma população.
Um modelo muito flexível pode produzir curvas bastante diferentes em cada amostra.
Essa sensibilidade aos dados é chamada variância.
Modelos muito simples podem variar pouco entre amostras, mas errar sistematicamente a forma de \(r(x)\).
Esse erro sistemático é chamado viés.
Para um ponto \(x\),
\[ \operatorname{Bias}[\hat g(x)] = E[\hat g(x)]-r(x) \]
Interpretação:
quanto a previsão média do procedimento de aprendizagem se afasta sistematicamente da função verdadeira.
\[ \operatorname{Var}[\hat g(x)] \]
Interpretação:
quanto o modelo estimado muda quando utilizamos uma nova amostra de treinamento.
Sob perda quadrática,
\[
\boxed{
E\left[(Y-\hat{g}(x))^2 \mid X=x\right]
=
\operatorname{Bias}^2\left[\hat{g}(x)\right]
+
\operatorname{Var}\left[\hat{g}(x)\right]
+
\sigma^2(x)
}
\]
| Componente | Significado |
|---|---|
| \(\operatorname{Bias}^2\left[\hat{g}(x)\right]\) | erro sistemático |
| \(\operatorname{Var}\left[\hat{g}(x)\right]\) | sensibilidade à amostra |
| \(\sigma^2(x)=\operatorname{Var}(Y\mid X=x)\) | ruído irredutível |
Em geral,
\[ \text{complexidade}\uparrow \Rightarrow \begin{cases} \text{viés}\downarrow\\ \text{variância}\uparrow \end{cases} \]
O objetivo é encontrar um compromisso que minimize o erro de generalização.
| Modelo | Viés | Variância |
|---|---|---|
| grau \(1\) | alto | baixa |
| grau \(4\) | moderado | moderada |
| grau \(50\) | baixo | alta |
O melhor modelo não é necessariamente o mais simples nem o mais flexível.
Exemplo:
\[ \beta_0,\beta_1,\ldots,\beta_p \]
São estimados no conjunto de treinamento.
Exemplo:
\[ p=\text{grau do polinômio} \]
Controla a estrutura/complexidade e é escolhido por validação.
| Método | Controle de complexidade |
|---|---|
| Regressão polinomial | grau \(p\) |
| Ridge/Lasso | \(\lambda\) |
| KNN | \(k\) |
| Kernel | bandwidth \(h\) |
| Árvore | profundidade / poda |
| Random Forest | mtry |
| Boosting | profundidade, learning rate, nº de árvores, |
Os algoritmos mudam; o problema estatístico de controlar a complexidade permanece.
Se \(\theta\) representa um hiperparâmetro,
\[ \boxed{ \hat\theta = \arg\min_{\theta} \widehat R_{CV}(\theta) } \]
O ajuste de hiperparâmetros deve ser feito sem usar o conjunto de teste.
Qual função queremos aprender?
\[r(x)=\mathbb E[Y\mid X=x]\]
Como medimos um erro?
\[L(Y,g(X))\]
Como medimos a qualidade de um modelo?
\[R(g)=\mathbb E[L(Y,g(X))]\]
Como estimamos o desempenho em novos dados?
\[\text{Validação / cross-validation}\]
Como controlamos a complexidade?
\[\text{Tuning / regularização}\]
EST335 — Semana 1